home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2007 December / PCWKCD1207B.iso / Blogowanie poza sfera / Flock 0.9.1.3 stable / flock-0.9.1.3.en-US.win32.exe / flock / chrome / browser.jar / content / browser / bookmarks / onlineBookmarksSharing.js < prev    next >
Text File  |  2007-08-15  |  11KB  |  299 lines

  1. // BEGIN FLOCK GPL
  2. // 
  3. // Copyright Flock Inc. 2005-2007
  4. // http://flock.com
  5. // 
  6. // This file may be used under the terms of of the
  7. // GNU General Public License Version 2 or later (the "GPL"),
  8. // http://www.gnu.org/licenses/gpl.html
  9. // 
  10. // Software distributed under the License is distributed on an "AS IS" basis,
  11. // WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
  12. // for the specific language governing rights and limitations under the
  13. // License.
  14. // 
  15. // END FLOCK GPL
  16. //
  17.  
  18.  
  19.  
  20. var faves_coop = Components.classes['@flock.com/singleton;1']
  21.                     .getService(Components.interfaces.flockISingleton)
  22.                     .getSingleton('chrome://browser/content/flock/common/load-faves-coop.js').wrappedJSObject;
  23. var gUrl;
  24.  
  25. function getNormalizedURL(url)
  26. {
  27.   // Check to see if the item is a local directory path, and if so, convert
  28.   // to a file URL so that aggregation with rdf:files works
  29.   try {
  30.     const kLF = Components.classes["@mozilla.org/file/local;1"]
  31.                           .createInstance(Components.interfaces.nsILocalFile);
  32.     kLF.initWithPath(url);
  33.     if (kLF.exists()) {
  34.       var ioService = Components.classes["@mozilla.org/network/io-service;1"]
  35.                                 .getService(Components.interfaces.nsIIOService);
  36.       var fileHandler = ioService.getProtocolHandler("file")
  37.                                  .QueryInterface(Components.interfaces.nsIFileProtocolHandler);
  38.  
  39.       url = fileHandler.getURLSpecFromFile(kLF);
  40.     }
  41.   }
  42.   catch (e) {
  43.   }
  44.  
  45.   return url;
  46. }
  47.  
  48. function Bookmark() {
  49.   this.URL = "";
  50.   this.name = "";
  51.   this.description = "";
  52.   this.tags = "";
  53.   this.time = "";
  54. }
  55.  
  56. Bookmark.prototype = {
  57.   getInterfaces: function (count) {
  58.     var interfaceList = [Components.interfaces.flockIBookmark, Components.interfaces.nsIClassInfo];
  59.     count.value = interfaceList.length;
  60.     return interfaceList;
  61.   },
  62.   QueryInterface: function (iid) {
  63.     if (!iid.equals(Components.interfaces.flockIBookmark))
  64.       throw Components.results.NS_ERROR_NO_INTERFACE;
  65.     return this;
  66.   },
  67.   getHelperForLanguage: function (count) {return null;}
  68. }
  69.  
  70. function simpleEnumerator (aArray) {
  71.   this.data = aArray;
  72. }
  73.  
  74. simpleEnumerator.prototype = {
  75.   hasMoreElements: function () { 
  76.     return this.data.length != 0; 
  77.   },
  78.   getNext: function () { 
  79.     return this.data.shift (); 
  80.   },
  81.   getInterfaces: function (count) {
  82.     var interfaceList = [Components.interfaces.nsISimpleEnumerator, Components.interfaces.nsIClassInfo];
  83.     count.value = interfaceList.length;
  84.     return interfaceList;
  85.   },
  86.   QueryInterface: function (iid) {
  87.     if (!iid.equals(Components.interfaces.nsISimpleEnumerator))
  88.       throw Components.results.NS_ERROR_NO_INTERFACE;
  89.     return this;
  90.   },
  91.   getHelperForLanguage: function (count) {return null;}
  92. }
  93.  
  94.  
  95. // TODO:
  96. //  * Get the right name/description for each tab
  97. //  * add a publishList in the backend to publish a list of url
  98. //  * wait one second between each call (or do a batch publish)
  99. function bgPublishAll(aBookmarkList, servicesBox, aListener) {
  100.   if (!servicesBox.hasChildNodes()) {
  101.     // No account => nothing to publish!
  102.     return false;
  103.   }
  104.   var neededToPublish = false;
  105.   var children = servicesBox.childNodes;
  106.   for (var i = 0; i < children.length; i++) {
  107.     // the first child will be the accountItem, ignore the parent
  108.     var accountItem = children.item(i).firstChild;
  109.     if (accountItem.checked) {
  110.       var svc = Cc[accountItem.serviceId]
  111.                 .getService(Ci.flockIBookmarkWebService);
  112.       svc.publishList(aListener, accountItem.accountId,
  113.                       new simpleEnumerator(aBookmarkList.concat()),
  114.                       accountItem.getPrivate());
  115.       neededToPublish = true;
  116.     }
  117.   }
  118.   return neededToPublish;
  119. }
  120.  
  121. function saveShareSettings() {
  122.   var servicesBox = $("bmServices-box");
  123.   var pref_service = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefBranch);
  124.   if(servicesBox.hasChildNodes()) {
  125.     var children = servicesBox.childNodes;
  126.     for(var i=0; i< children.length; i++) {
  127.       var child = children[i];
  128.       if(child.localName == 'row')
  129.       {
  130.         child = child.firstChild;
  131.       }    
  132.       pref_service.setBoolPref(("flock.favorites.do." + child.serviceId+ "--"+child.accountId), child.checked);
  133.       pref_service.setBoolPref(("flock.favorites.private." + child.serviceId+ "--"+child.accountId), child.getPrivate());
  134.     }
  135.   }
  136. }
  137. function loadShareSettings()
  138. {
  139.   var servicesBox = $("bmServices-box");
  140.   var pref_service = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefBranch);
  141.   var haveShared = false;
  142.    if(servicesBox.hasChildNodes()) {
  143.      var children = servicesBox.childNodes;
  144.      for(var i=0; i< children.length; i++) {
  145.        var child = children[i];
  146.        if(child.localName == 'row')
  147.        {
  148.          child = child.firstChild;
  149.        }
  150.        try
  151.        {
  152.         child.checked = pref_service.getBoolPref("flock.favorites.do." + child.serviceId+ "--"+child.accountId);
  153.         child.private = pref_service.getBoolPref("flock.favorites.private." + child.serviceId+ "--"+child.accountId);
  154.         haveShared = true;
  155.        }catch(e){}    
  156.      }
  157.    }
  158.      return haveShared;
  159.  }
  160.  
  161. function didUserAskToPublish(aServicesBox) {
  162.   var children = aServicesBox.childNodes;
  163.   var userAsked = false;
  164.   for (var i = 0; i < children.length; i++) {
  165.     var accountItem = children.item(i).firstChild;
  166.     if (accountItem.checked &&
  167.         accountItem.toggleOccurred) {
  168.       // accountItem was checked by user
  169.       userAsked = true;
  170.       break;
  171.     }
  172.   }
  173.   return userAsked;
  174. }
  175.  
  176. function publishOnline(aService, accoundId, items, tags)
  177. {
  178.   var acUtils = Components.classes["@flock.com/account-utils;1"]
  179.                           .getService(Components.interfaces.flockIAccountUtils);
  180.   var accounts = acUtils.getAccountsByInterface("flockIBookmarkWebService");
  181.  
  182.   var bookmarks = [];
  183.   for (i in items) {
  184.     var coopitem = faves_coop.get_from_resource(items[i]);
  185.     var bookmark = new Bookmark;
  186.     bookmark.URL = coopitem.URL;
  187.     bookmark.name = coopitem.name;
  188.     bookmark.description = coopitem.description;
  189.     bookmark.tags = coopitem.tags+' '+tags;
  190.     
  191.     bookmarks.push(bookmark);
  192.   }
  193.  
  194.   while (accounts.hasMoreElements()) {
  195.     var account = accounts.getNext().QueryInterface(Components.interfaces.flockIWebServiceAccount);
  196.     var c_acct = faves_coop.get(account.urn);
  197.     if (c_acct.serviceId.indexOf(aService > -1) && c_acct.accountId == accoundId) {
  198.       var svc = Components.classes[c_acct.serviceId].getService(Components.interfaces.flockIWebService);
  199.       svc.QueryInterface(Components.interfaces.flockIBookmarkWebService);
  200.  
  201.       var listener = {
  202.         onSuccess: function (aSubject, aTopic) {
  203.           dump('we published !!!\n');
  204.         },
  205.         onError: function (aSubject, aTopic, aError) {
  206.           alert("Error publishing to your bookmark service");
  207.         }
  208.       }
  209.       svc.publishList(listener, c_acct.accountId, new simpleEnumerator(bookmarks), false);
  210.       break;
  211.     }
  212.   }
  213. }
  214.  
  215. function saveOnlineBookmarkLocally(item, parent)
  216. {
  217.   
  218.   var coopitem    = faves_coop.get_from_resource(item);
  219.   var uri = coopitem.id()
  220.   var urlIndex = uri.indexOf("http://");
  221.   var url = uri.substring(urlIndex, uri.length);
  222.   var resource = BMDS.addBookmarkToFolder(parent, coopitem.name, url, '', 
  223.                                     coopitem.description, '', 
  224.                                     '',coopitem.tags);
  225.   return BookmarksUtils.getSelectionFromResource(resource);
  226. }
  227. function loadShareArea(servicesBox, aUrl, preCheck) {
  228.   var prefsService = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefBranch);
  229.   gUrl = aUrl;
  230.   // Populate the account list
  231.   var acUtils = Components.classes["@flock.com/account-utils;1"]
  232.                           .getService(Components.interfaces.flockIAccountUtils);
  233.   var accounts = acUtils.getAccountsByInterface("flockIBookmarkWebService");
  234.   var isShared = false;
  235.   if(accounts.hasMoreElements()) {
  236.     $("shareArea").setAttribute('hidden', false);
  237.   }else
  238.   {
  239.     $("createlocalcheck").setAttribute("disabled", true);
  240.     $("createlocalcheck").setAttribute("checked", true);
  241.   }
  242.   while (accounts.hasMoreElements()) {
  243.     var row =  document.createElementNS("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul", "row");
  244.     row.setAttribute('align', "center");
  245.     servicesBox.appendChild(row);
  246.     var account = accounts.getNext().QueryInterface(Components.interfaces.flockIWebServiceAccount);
  247.     var c_acct = faves_coop.get(account.urn);
  248.     var svc = Cc[c_acct.serviceId].getService(Ci.flockIWebService);
  249.     try {
  250.       svc.QueryInterface(Ci.flockIBookmarkWebService);
  251.       var accountItem = document.createElementNS("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul", "bookmarksAccount");
  252.       accountItem.setAttribute("flex", 1);
  253.       accountItem.setAttribute("icon", c_acct.favicon);
  254.       accountItem.setAttribute("value", c_acct.name);      
  255.       accountItem.serviceId = c_acct.serviceId;
  256.       accountItem.accountId = c_acct.accountId;
  257.       accountItem.id = c_acct.accountId + "-" + c_acct.serviceId;
  258.       row.appendChild(accountItem);
  259.       if (svc.exists(c_acct.accountId, gUrl))
  260.       {
  261.         var bookmark = faves_coop.get(svc.urn+":"+accountItem.accountId+':'+gUrl);
  262.         var date = "Last published date unavailable";
  263.         var dateString = null;
  264.         if(bookmark.LastModifiedDate)
  265.         {  
  266.           var myDate= new Date(bookmark.LastModifiedDate);
  267.           dateString = myDate.toLocaleString();          
  268.         }else if(bookmark.datevalue)
  269.         {
  270.           var myDate= new Date(bookmark.datevalue);
  271.           dateString = myDate.toLocaleString();
  272.         } 
  273.        if(dateString)
  274.        {
  275.          var dateArray = dateString.split(' ');
  276.           if(dateArray.length == 5)
  277.             date = dateArray[1] + ' ' + dateArray[2] + ',  ' + dateArray[4]; 
  278.          else if(dateArray.length > 5)
  279. //@line 282 "/cygdrive/K/tinderbuild/src/flock/mozilla/browser/components/bookmarks/content/onlineBookmarksSharing.js"
  280.             date = dateArray[1] + ' ' + dateArray[2] + ' ' + dateArray[3];
  281. //@line 284 "/cygdrive/K/tinderbuild/src/flock/mozilla/browser/components/bookmarks/content/onlineBookmarksSharing.js"
  282.        }
  283.         accountItem.setAttribute("publishDate",date);
  284.         setTimeout("$('" + accountItem.id   +"').myToggleCheckBox()", 0);
  285.         accountItem.setAttribute("checked", true);
  286.         accountItem.setAttribute("private", bookmark.private);
  287.         accountItem.setAttribute("privateStatus", bookmark.private);
  288.         isShared = true
  289.        }  
  290.       
  291.     }
  292.     catch(e) {
  293.       // The account is not on a flockIBookmarkWebService
  294.        dump(e);
  295.     }
  296.   }
  297.   return isShared;
  298. }
  299.